
import * as THREE from 'three';

function testShowVertexColor(scene) {
    // --------------------- 顶点位置属性 ---------------------
    // 创建一个空的几何体对象
    const geometry = new THREE.BufferGeometry();
    // 顶点坐标
    const vertices = new Float32Array([
        0, 0, 0, //顶点1坐标
        50, 0, 0, //顶点2坐标
        0, 100, 0, //顶点3坐标
        0, 0, 10, //顶点4坐标
        0, 0, 100, //顶点5坐标
        50, 0, 10, //顶点6坐标
    ]);
    // 三个一组 表示一个顶点的xyz坐标
    let attribute = new THREE.BufferAttribute( vertices, 3 );
    // 设置几何体attributes 属性的 position属性
    geometry.attributes.position = attribute;


    // --------------------- 顶点颜色数据解析&颜色插值 ---------------------
    // 顶点颜色数据 RGB
    let point_colors = new Float32Array([
        1, 0, 0, //顶点1颜色
        0, 1, 0, //顶点2颜色
        0, 0, 1, //顶点3颜色
      
        1, 1, 0, //顶点4颜色
        0, 1, 1, //顶点5颜色
        1, 0, 1, //顶点6颜色
    ]);
    // 设置几何体 attribute 属性中的 color 属性
    geometry.attributes.color = new THREE.BufferAttribute( point_colors, 3 );
    // 材质对象
    let point_material = new THREE.PointsMaterial({
        vertexColors: true, // 以顶点颜色为准 boolean
        size: 1.0,          // 点对象像素尺寸
        side: THREE.DoubleSide
    });
    
    // 点渲染模式
    // let points = new THREE.Points( geometry, point_material );
    // scene.add( points );

    let meshVertexColor = new THREE.Mesh(geometry, point_material);
    scene.add(meshVertexColor);
}

const TestVertexColor = {
    testShowVertexColor
};

export default TestVertexColor;
